package com.pan.admin.module.loanUser.entity;

import com.pan.admin.common.core.domain.BaseEntity;
import lombok.Data;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.stream.Collectors;

/**
 * @Description:用户注册对象 loan_user_register
 * @Author: ghb
 * @Date: 2023/9/7 16:38
 */
@Data
public class LoanUserRegister extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Long id;

    /**
     * 渠道主键id
     */
    private Long loanChannelId;

    /**
     * 渠道名称
     */
    private String loanChannelName;

    /**
     * 机构主键id
     */
    private Long loanProductId;

    /**
     * 机构名称
     */
    private String loanProductName;

    /**
     * 机构计划主键id
     */
    private Long loanProductPlanId;

    /**
     * 机构计划名称
     */
    private String loanProductPlanName;

    /**
     * 用户账户
     */
    private String userName;

    /**
     * 性别
     */
    private String sex;

    /**
     * 唯一编码
     **/
    private String uniqueCode;

    /**
     * 渠道链接
     **/
    private String link;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 多个手机号
     */
    private String multiplePhone;

    /**
     * 多个手机号
     */
    private List<String> phoneList;

    /**
     * 手机号md5值
     */
    private String phoneMd5;

    /**
     * 地区编码
     */
    private String areaCode;

    /**
     * 银行卡号
     */
    private String bankCard;

    /**
     * 身份证号
     */
    private String idcard;

    /**
     * /**
     * ip地址
     */
    private String ip;

    /**
     * 地区名称
     */
    private String areaName;

    /**
     * 浏览器名
     */
    private String browserName;

    /**
     * 操作系统名
     */
    private String osName;

    /**
     * 设备类型
     */
    private String deviceType;

    /**
     * 其他渠道已注册(0未注册，1已注册)
     */
    private String isChannelRegister;


    private String remark;

    /** 资质备注 */
    private String formRemark;

    /**
     * 渠道类型(1H5，2APP)
     */
    private Integer type;

    /**
     * 渠道版本(0 h5V1, 1 h5v2, 2 appv1)
     */
    private Integer version;

    /**
     * 评分
     */
    private String rating;

    /** 用户跟进状态 */
    private Integer traceStatus;

    /** 运营商(0电信，1移动，2联通，3未知) */
    private Integer operatorType;
    /** 手机号状态（0实号，1空号，2停机，3错误号） */
    private Integer phoneStatus;
    /** 二要素验证（0失败，1成功）姓名+手机号 */
    private Integer twoElementStatus;
    /** 三要素验证（0失败，1成功）姓名+手机号+身份证 */
    private Integer threeElementStatus;

    /** 开始时间 */
    private String startTime;
    /** 结束时间 */
    private String endTime;
    /**
     * 地区ids
     */
    private List<String> areaIds;

    /**
     * 车牌号
     */
    private String carLicensePlate;

    /**
     * 渠道列表去重
     *
     * @param list
     * @return
     */
    public static List<LoanUserRegister> distinctChannelList(List<LoanUserRegister> list) {
        List<LoanUserRegister> distinctByChannelId = list.stream()
                .collect(Collectors.collectingAndThen(
                        Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(LoanUserRegister::getLoanChannelId))),
                        ArrayList::new
                ));
        return distinctByChannelId;
    }

}
